

package com.hazelcast.spi.impl.operationservice;

import com.hazelcast.internal.cluster.impl.operations.JoinOperation;
import com.hazelcast.internal.cluster.impl.operations.WanOperation;
import com.hazelcast.internal.partition.MigrationCycleOperation;

/**
 * Utility class that contains helper methods related to {@link Operation}
 */
public final class Operations {

    private static final ClassLoader THIS_CLASS_LOADER = OperationAccessor.class.getClassLoader();

    private Operations() {
    }

    public static boolean isJoinOperation(Operation op) {
        return op instanceof JoinOperation && op.getClass().getClassLoader() == THIS_CLASS_LOADER;
    }

    public static boolean isMigrationOperation(Operation op) {
        return op instanceof MigrationCycleOperation && op.getClass().getClassLoader() == THIS_CLASS_LOADER;
    }

    /**
     * Checks if the given operation is an instance of {@link WanOperation}
     */
    public static boolean isWanReplicationOperation(Operation op) {
        return op instanceof WanOperation && op.getClass().getClassLoader() == THIS_CLASS_LOADER;
    }
}
